'use strict';
// 获取操作类型
const { ACTION_TYPE } = require('../constants/actionType');
// 获取Controller类
const Controller = require('egg').Controller;

class AlbumController extends Controller {
  async create() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { name, description, isDefaultAlbum } = ctx.request.body;
    const albumId = await ctx.service.album.create(userId, name, description, isDefaultAlbum);
    await ctx.service.record.create(userId, ACTION_TYPE.CreateAlbum, `相册ID：${albumId}，相册名：${name}`);
    ctx.body = ctx.helper.formatResponse({ albumId }, 200, '新建相册成功');
  }

  async info() {
    const { ctx } = this;
    const { albumId } = ctx.request.query;
    const albumInfo = await ctx.service.album.info(albumId);
    ctx.body = ctx.helper.formatResponse(ctx.helper.jsonToHump(albumInfo), 200, '获取相册信息成功');
  }

  async index() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const list = await ctx.service.album.index(userId);
    ctx.body = ctx.helper.formatResponse({ list: ctx.helper.jsonToHump(list), total: list.length }, 200, '获取相册列表成功');
  }

  async edit() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const updateInfo = ctx.helper.jsonToUnderline(ctx.request.body);
    const success = await ctx.service.album.edit(updateInfo);
    await ctx.service.record.create(userId, ACTION_TYPE.EditAlbum, `修改信息${JSON.stringify(updateInfo)}`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '更新相册信息成功');
  }

  async destory() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { albumId } = ctx.request.query;
    const success = await ctx.service.album.destory(userId, albumId);
    await ctx.service.record.create(userId, ACTION_TYPE.DeleteAlbum, `删除ID为 ${albumId} 的相册,相册中所有照片移动至回收站`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '删除相册及其所有照片成功');
  }

  async unit() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { originAlbumId, targetAlbumId } = ctx.request.body;
    const success = await ctx.service.album.unit(originAlbumId, targetAlbumId);
    await ctx.service.record.create(userId, ACTION_TYPE.UnitAlbum, `将ID为 ${originAlbumId} 的相册合并到ID为 ${targetAlbumId} 的相册中`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '移动相册所有照片成功');
  }

}


module.exports = AlbumController;
